Repository navigation
DEV: добавить поиск и фильтр программ для экспертов - #758
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
В Django Admin → Experts добавлены стандартная строка поиска и фильтр
By partner program. Можно найти эксперта по имени, фамилии или email и сузить выдачу до участников legacy-программы. Таблица сохраняетid,user; пользователи загружаются вместе со строками.Base / head
dev):11f1e66a85e266d57fc6b0f8c080ee8cd0683f19.feature/dev-expert-admin-search):f7285d20cf8e8deafa266efd04859ca12b75bc17.Search / program filter / performance
search_fields = ("user__first_name", "user__last_name", "user__email"): стандартныйicontains, AND между словами, OR между полями. Полное имя ищется по нескольким полям, это не строгое сравнение ФИО.list_filter = ("user__partner_program_profiles__partner_program",)используетRelatedFieldListFilter, существующие PartnerProgram и их__str__. Legacy путь:Expert.user → CustomUser.partner_program_profiles → PartnerProgramUserProfile.partner_program.Allснимает программу, сохраняя search. Без фильтра видны и эксперты без программы. Search + filter работают вместе.distinct()не требуется: Django 4.2.11 распознаёт reverse FK и устраняет потенциальные дубли через SQLEXISTS. Эксперт в двух программах отображается один раз.?e=1без 500.list_select_related = ("user",): строки и связанные пользователи загружаются одним SQL-запросом, без N+1. Стандартные запросы counts/choices/session/permissions остаются.Переносимость case-insensitive тестов
Проверки разделены по возможностям БД:
[email protected]→[email protected], выполняется на всех БД.Анна Смирнова→АННА СМИРНОВА; явноskipTestприconnection.vendor != "postgresql".Доработка после head
381afdeменяет толькоusers/tests/test_expert_admin.pyиdocs/expert-admin/README.md. Productionusers/admin.pyсовпадает побайтово;get_search_results,search_fields, Python-фильтрация, настройки БД и workflows не менялись.Файлы PR и scope
users/admin.py: три настройки ExpertAdmin; перенос строк Black в одном прежнем выражении CustomUserAdmin без изменения поведения.users/tests/test_expert_admin.py: 19 тестов search/filter/duplicates/query count/permissions и DB-specific case-insensitive.docs/expert-admin/README.md, browser script/results и два PNG: описание и QA.list_display = ("id", "user")сохранён. Модели, schema, migrations и permissions/staff/superuser не менялись. Angular untouched; React untouched. Application/Team/Submission/current_application не используются. Dependencies/workflows/test harness сохранены.Локальные проверки текущего head
Python 3.11.15, Django 4.2.11; обычные SQLite settings (
DEBUG=True,procollab.settings) и отдельный PostgreSQL 18.1 (procollab.settings_ci). Существующие настройки не редактировались; отдельные рабочие копии исключают пересечение тестовых файлов/БД.--keepdbкак в CIgit diff --checkЛокальный полный SQLite suite вывел
OK (skipped=5), затем завершился сPermissionError: [WinError 32]при удаленииtest_db.sqlite3на Windows. После выхода тестового процесса временная БД удалена успешно. Это ошибка teardown, не тестовых assertions; обычный GitHub CI на Linux полностью прошёл, включая cleanup. Из 5 skips один — новый тест кириллицы, остальные 4 — существующие ограничения набора. Настройки, workflow и test harness для обхода этой ошибки не менялись.На первоначальном head также выполнены migration check (No changes detected) и настоящий browser QA
/admin/users/expert/: 17 assertions, 11 состояний, 0 JS errors / HTTP 500. Production-код этой доработкой не менялся; повторная браузерная проверка не требовалась.GitHub CI на exact head
QA README · Browser results
Тот же Draft PR #758. Merge/deploy не выполнялись.